我們了解了Spring MVC的組成後,讓我們再回到Spring框架中,@Service
是一種用於定義服務層組件的註解,也可以稱作業務邏輯層。它是Spring的一個組件掃描註解,會告訴Spring並把被標記的類別識別為服務層組件將其管理為Spring的Bean。服務層通常用於業務邏輯的處理,例如數據的處理、計算、驗證等。
public class Restaurant {
private String chef;
private String food;
public Restaurant(String chef, String food) {
this.chef = chef;
this.food = food;
}
public String getChef() {
return chef;
}
public String getFood() {
return food;
}
}
@Service
註解標示廚房這個類別來處理業務邏輯的方法:package com.example.spring.service;
import org.springframework.stereotype.Service;
@Service
public class Kitchen {
// 服務層業務邏輯程式碼
public String cook(Restaurant restaurant){
String dish = restaurant.getChef + "cooks" + restaurant.getFood;
return dish;
}
}
package com.example.spring.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.servlet.ModelAndView;
@Controller
public class HelloController {
// 依賴注入 Kitchen 服務層
@Autowire
private Kitchen kitchen;
@RequestMapping("/hello")
public ModelAndView helloWorld() {
ModelAndView modelAndView = new ModelAndView("helloView");
// 建立一個 Restaurant 物件
Restaurant restaurant = new Restaurant("John", "Fish");
// 將 Restaurant 物件讓廚房的方法處理
String dish = kitchen.cook(restaurant);
// 將回傳 dish 加到模型中
modelAndView.addAttribute("dish", dish);
// 回傳 ModelAndView 物件
return modelAndView;
}
}
@Service
註解的主要目的是將服務層的類納入Spring容器的管理中,以便可以進行依賴注入、AOP(面向切面編程)等Spring特性的使用。這有助於實現鬆耦合的應用程式架構,提高了程式碼的可維護性和可測試性。
https://www.baeldung.com/spring-component-repository-service
https://www.tutorialspoint.com/spring_boot/spring_boot_service_components.htm